Skip to main content

공개키 암호, 대칭키 암호

암호화

암호화란, 원본을 알아보지 못하도록 바꾸는데 쓰이는 컴퓨터 알고리즘이다.

암호는 개인정보 보호와 악의적 공격자의 공격으로 인하여 데이터가 누출되었을 때 중요한 자료들을 바로 가져갈 수 없도록 처리하거나 온라인 상에서 신원을 보장하는데 이용될 수 있다.

암호는 대칭형 암호와 비대칭형 암호, 2가지로 나눌 수 있으며, 암호화에 사용하는 키 값과 복호화에 사용하는 키 값이 같은지 다른지를 기준으로 구분한다. 암호화할 때, 사용한 키로 복호화를 할 수 있으면 대칭형 암호, 암호화 키와 복호화 키를 따로 구분하면 비대칭형 암호이다. 대칭형 암호는 비공개키 암호에 사용되고, 비대칭형 암호는 공개키 암호에 사용된다.

대칭형 암호

대칭형 암호는 암호화와 복호화에 같은 암호키를 사용하는 알고리즘을 의미한다.

대칭키 = 개인키 = 비밀키 = 비공개키

대칭형 암호

대칭키 암호에서는 암호화와 복호화에 같은 암호키를 공유해야한다. 공개키 암호에서 공개키와 비밀키를 별도로 가지는 것과 대조적이다. 대신, 대부분의 대칭키 암호는 공개키 암호와 비교해서 계산 속도가 빠른 장점이 있다. 따라서 많은 암호화 통신에서는 비밀키 암호를 사용하여 대칭키 암호의 공통키를 공유하고, 그 키를 기반으로 실제 통신을 암호화하는 구조를 사용한다.(전송 계층 보안(TLS))

대칭키 암호는 비밀키 하나만 알아내면 암호화된 내용을 해독 가능하다. => 해커로부터 안전하지 않다.

대칭키 암호는 암호화하는 단위에 따라 스트림 암호와 블록 암호로 나눌 수 있다.

블록 암호

블록암호는 고정된 크기의 블록 단위로 암호화와 복호화 연산을 수행하고, 암호키 크기에 따라 64~256비트 블록 크기로 연산을 수행한다.

블록암호 알고리즘은 평문 블록을 암호 블록으로 만들 때 적용되는 방식에 따라 파이스텔 블록 구조와 SPN 블록 구조로 구분된다.

파이스텔 블록 구조는 입력되는 평문 블록을 좌우 두 개 블록으로 분할하고, 좌측 블록을 파이스텔 함수라 불리는 라운드 함수를 적용하여 출력된 결과를 우측 블록에 적용하는 과정을 반복적으로 수행한다. 파이스텔 블록구조를 채택한 블록암호에는 DES가 있다.

DES는 56비트라는 작은 암호키로 인해 암호화를 해도 깰 수 있다. 이를 보완하여 3DES가 나왔지만 보안적인 요소는 증가했지만 성능은 저하되었다.

SPN 블록구조는 평문 블록을 분할하지 않고 전체 블록을 적용하는 방식으로 라운드 함수의 역함수를 구해야 하는 어려움이 있는 구조이지만, 컴퓨팅 속도의 발전으로 어려움을 극복할 수 있게 되었다. SPN 블록 구조를 사용한 블록 암호에는 AES가 있다.

AES는 DES를 대체하기 위해 나왔고 키의 크기는 128, 192, 256 비트를 지원하고 암호 블록 크기는 128비트 이다. 아직까지 해독된 사례가 없어 안전성이 보장된 알고리즘이다.

공개키 암호

공개키 암호는 대칭키 암호의 키 전달에 있어서 취약점을 해결하고자 한 노력의 결과로 탄생한 암호방식이다. 공개키 암호는 한 쌍의 키가 존재한다. 하나는 특정 사람만이 가지는 개인키(비밀키)이고 다른 하나는 누구나 가질 수 있는 공개키이다.

공개키 기법 = 비대칭키 기법

개인키로 암호화 한 정보는 그 쌍이 되는 공개키로만 복호화 가능하고, 반대로 공개키로 암호화 한 정보는 그 쌍이 되는 개인키로만 복호화가 가능하다. 즉 공개키 암호 방식은 암호화할 때 사용하는 암호키와 복호화할 때 사용하는 암호키가 서로 다르기 때문에 비대칭키 암호라고도 불린다. 공개키 암호는 암호화, 복호화를 위해 복잡한 수학연산을 수행하기 때문에 대칭키에 비해 속도가 느리다는 단점이 있다.

대칭키 암호의 장점과 공개키 암호의 장점을 채택하여 용량이 큰 정보는 대칭키로 암호화하고, 암호화에 사용된 대칭키는 공개키로 암호화하여 대상에게 전달하는 하이브리드 암호화 방법이 일반적으로 활용되고 있다.

공개키 암호

특정 사람의 개인키와 공개키는 어떻게 생성하고, 배포하고, 관리해야 하는 지에 대한 이슈가 있고, 어떤 공개키가 특정 사람의 공개키라는 것을 보장할 수 있는지에 대한 이슈도 있다.

이를 해결하기 위해서 디지털 인증서를 도입하였고 이를 활용하는 소프트웨어, 하드웨어, 정책, 제도, 사용자 등을 총칭해서 공개키 기반 구조라고 불린다. 이에 대한 예시는 RSA 이다.

RSA 암호화 과정

위 링크를 누르면 RSA 암호화에 대해 확인할 수 있다.

공개키 암호와 대칭키 암호의 차이점

공개키 암호 vs 대칭키 암호

나올 수 있는 면접 질문

  • 대칭키 암호와 공개키 암호란?
  • 공개키 암호와 대칭키 암호의 차이점은?

참고 url

Gaeko's Blog - 공개키 암호, 대칭키 암호 특징

불곰 - 암호화 예시

위키백과 - 대칭 키 암호

나무위키 - 암호 알고리즘

기여자


HelloNaks

📦